from llama_index.core import VectorStoreIndex, Document
from llama_index.core.node_parser import SentenceSplitter

# 创建大量示例文档，这里生成100个包含LlamaIndex信息的文档
# 实际应用中，文档内容可能来自文件、数据库或API
large_sample_texts = [
    f"这是第{i}个文档，包含关于LlamaIndex的信息。"
    + "LlamaIndex是一个强大的数据框架，用于构建LLM应用。"
    + "它支持多种索引类型和查询策略。"
    for i in range(100)  # 创建100个文档
]
# 设置每批处理的文档数量20
BATCH_SIZE = 20
# 用于存储所有的Documents对象的列表
all_documents = []
# 按批次处理large_sample_texts，避免一次性的处理大量的数据导致内存的问题
for i in range(0, len(large_sample_texts), BATCH_SIZE):
    # 获取每一批的文档
    batch_texts = large_sample_texts[i : i + BATCH_SIZE]
    # 将当前批次的每个文档转成Document对象
    batch_documents = [Document(text=text) for text in batch_texts]
    all_documents.extend(batch_documents)

node_parser = SentenceSplitter(chunk_size=1024, chunk_overlap=20)
nodes = node_parser.get_nodes_from_documents(all_documents)
index = VectorStoreIndex(nodes, show_progress=True)

# 创建查询引擎，用于后续的查询操作
query_engine = index.as_query_engine()

# 执行一次查询，问题为“LlamaIndex的主要功能是什么？”
response = query_engine.query("LlamaIndex的主要功能是什么？")
# 打印查询结果
print(response)
